1 /* 2 3 Boost Software License - Version 1.0 - August 17th, 2003 4 5 Permission is hereby granted, free of charge, to any person or organization 6 obtaining a copy of the software and accompanying documentation covered by 7 this license (the "Software") to use, reproduce, display, distribute, 8 execute, and transmit the Software, and to prepare derivative works of the 9 Software, and to permit third-parties to whom the Software is furnished to 10 do so, all subject to the following: 11 12 The copyright notices in the Software and this entire statement, including 13 the above license grant, this restriction and the following disclaimer, 14 must be included in all copies of the Software, in whole or in part, and 15 all derivative works of the Software, unless such copies or derivative 16 works are solely in the form of machine-executable object code generated by 17 a source language processor. 18 19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 DEALINGS IN THE SOFTWARE. 26 27 */ 28 29 module derelict.glib.garray; 30 31 import derelict.glib.gtypes; 32 import derelict.glib.glibconfig; 33 34 import core.stdc.config; 35 36 extern (C): 37 38 alias _GBytes GBytes; 39 alias _GArray GArray; 40 alias _GByteArray GByteArray; 41 alias _GPtrArray GPtrArray; 42 43 struct _GArray 44 { 45 gchar* data; 46 guint len; 47 } 48 49 struct _GByteArray 50 { 51 guint8* data; 52 guint len; 53 } 54 55 struct _GPtrArray 56 { 57 gpointer* pdata; 58 guint len; 59 } 60 61 struct _GBytes; 62 63 version(Derelict_Link_Static) 64 { 65 extern( C ) nothrow 66 { 67 GArray* g_array_new(gboolean zero_terminated, gboolean clear_, guint element_size); 68 GArray* g_array_sized_new(gboolean zero_terminated, gboolean clear_, guint element_size, guint reserved_size); 69 gchar* g_array_free(GArray* array, gboolean free_segment); 70 GArray* g_array_ref(GArray* array); 71 void g_array_unref(GArray* array); 72 guint g_array_get_element_size(GArray* array); 73 GArray* g_array_append_vals(GArray* array, gconstpointer data, guint len); 74 GArray* g_array_prepend_vals(GArray* array, gconstpointer data, guint len); 75 GArray* g_array_insert_vals(GArray* array, guint index_, gconstpointer data, guint len); 76 GArray* g_array_set_size(GArray* array, guint length); 77 GArray* g_array_remove_index(GArray* array, guint index_); 78 GArray* g_array_remove_index_fast(GArray* array, guint index_); 79 GArray* g_array_remove_range(GArray* array, guint index_, guint length); 80 void g_array_sort(GArray* array, GCompareFunc compare_func); 81 void g_array_sort_with_data(GArray* array, GCompareDataFunc compare_func, gpointer user_data); 82 void g_array_set_clear_func(GArray* array, GDestroyNotify clear_func); 83 GPtrArray* g_ptr_array_new(); 84 GPtrArray* g_ptr_array_new_with_free_func(GDestroyNotify element_free_func); 85 GPtrArray* g_ptr_array_sized_new(guint reserved_size); 86 GPtrArray* g_ptr_array_new_full(guint reserved_size, GDestroyNotify element_free_func); 87 gpointer* g_ptr_array_free(GPtrArray* array, gboolean free_seg); 88 GPtrArray* g_ptr_array_ref(GPtrArray* array); 89 void g_ptr_array_unref(GPtrArray* array); 90 void g_ptr_array_set_free_func(GPtrArray* array, GDestroyNotify element_free_func); 91 void g_ptr_array_set_size(GPtrArray* array, gint length); 92 gpointer g_ptr_array_remove_index(GPtrArray* array, guint index_); 93 gpointer g_ptr_array_remove_index_fast(GPtrArray* array, guint index_); 94 gboolean g_ptr_array_remove(GPtrArray* array, gpointer data); 95 gboolean g_ptr_array_remove_fast(GPtrArray* array, gpointer data); 96 void g_ptr_array_remove_range(GPtrArray* array, guint index_, guint length); 97 void g_ptr_array_add(GPtrArray* array, gpointer data); 98 void g_ptr_array_sort(GPtrArray* array, GCompareFunc compare_func); 99 void g_ptr_array_sort_with_data(GPtrArray* array, GCompareDataFunc compare_func, gpointer user_data); 100 void g_ptr_array_foreach(GPtrArray* array, GFunc func, gpointer user_data); 101 GByteArray* g_byte_array_new(); 102 GByteArray* g_byte_array_new_take(guint8* data, gsize len); 103 GByteArray* g_byte_array_sized_new(guint reserved_size); 104 guint8* g_byte_array_free(GByteArray* array, gboolean free_segment); 105 GBytes* g_byte_array_free_to_bytes(GByteArray* array); 106 GByteArray* g_byte_array_ref(GByteArray* array); 107 void g_byte_array_unref(GByteArray* array); 108 GByteArray* g_byte_array_append(GByteArray* array, const(guint8)* data, guint len); 109 GByteArray* g_byte_array_prepend(GByteArray* array, const(guint8)* data, guint len); 110 GByteArray* g_byte_array_set_size(GByteArray* array, guint length); 111 GByteArray* g_byte_array_remove_index(GByteArray* array, guint index_); 112 GByteArray* g_byte_array_remove_index_fast(GByteArray* array, guint index_); 113 GByteArray* g_byte_array_remove_range(GByteArray* array, guint index_, guint length); 114 void g_byte_array_sort(GByteArray* array, GCompareFunc compare_func); 115 void g_byte_array_sort_with_data(GByteArray* array, GCompareDataFunc compare_func, gpointer user_data); 116 } 117 } 118 else 119 { 120 extern( C ) nothrow 121 { 122 alias da_g_array_new = GArray* function(gboolean zero_terminated, gboolean clear_, guint element_size); 123 alias da_g_array_sized_new = GArray* function(gboolean zero_terminated, gboolean clear_, guint element_size, guint reserved_size); 124 alias da_g_array_free = gchar* function(GArray* array, gboolean free_segment); 125 alias da_g_array_ref = GArray* function(GArray* array); 126 alias da_g_array_unref = void function(GArray* array); 127 alias da_g_array_get_element_size = guint function(GArray* array); 128 alias da_g_array_append_vals = GArray* function(GArray* array, gconstpointer data, guint len); 129 alias da_g_array_prepend_vals = GArray* function(GArray* array, gconstpointer data, guint len); 130 alias da_g_array_insert_vals = GArray* function(GArray* array, guint index_, gconstpointer data, guint len); 131 alias da_g_array_set_size = GArray* function(GArray* array, guint length); 132 alias da_g_array_remove_index = GArray* function(GArray* array, guint index_); 133 alias da_g_array_remove_index_fast = GArray* function(GArray* array, guint index_); 134 alias da_g_array_remove_range = GArray* function(GArray* array, guint index_, guint length); 135 alias da_g_array_sort = void function(GArray* array, GCompareFunc compare_func); 136 alias da_g_array_sort_with_data = void function(GArray* array, GCompareDataFunc compare_func, gpointer user_data); 137 alias da_g_array_set_clear_func = void function(GArray* array, GDestroyNotify clear_func); 138 alias da_g_ptr_array_new = GPtrArray* function(); 139 alias da_g_ptr_array_new_with_free_func = GPtrArray* function(GDestroyNotify element_free_func); 140 alias da_g_ptr_array_sized_new = GPtrArray* function(guint reserved_size); 141 alias da_g_ptr_array_new_full = GPtrArray* function(guint reserved_size, GDestroyNotify element_free_func); 142 alias da_g_ptr_array_free = gpointer* function(GPtrArray* array, gboolean free_seg); 143 alias da_g_ptr_array_ref = GPtrArray* function(GPtrArray* array); 144 alias da_g_ptr_array_unref = void function(GPtrArray* array); 145 alias da_g_ptr_array_set_free_func = void function(GPtrArray* array, GDestroyNotify element_free_func); 146 alias da_g_ptr_array_set_size = void function(GPtrArray* array, gint length); 147 alias da_g_ptr_array_remove_index = gpointer function(GPtrArray* array, guint index_); 148 alias da_g_ptr_array_remove_index_fast = gpointer function(GPtrArray* array, guint index_); 149 alias da_g_ptr_array_remove = gboolean function(GPtrArray* array, gpointer data); 150 alias da_g_ptr_array_remove_fast = gboolean function(GPtrArray* array, gpointer data); 151 alias da_g_ptr_array_remove_range = void function(GPtrArray* array, guint index_, guint length); 152 alias da_g_ptr_array_add = void function(GPtrArray* array, gpointer data); 153 alias da_g_ptr_array_sort = void function(GPtrArray* array, GCompareFunc compare_func); 154 alias da_g_ptr_array_sort_with_data = void function(GPtrArray* array, GCompareDataFunc compare_func, gpointer user_data); 155 alias da_g_ptr_array_foreach = void function(GPtrArray* array, GFunc func, gpointer user_data); 156 alias da_g_byte_array_new = GByteArray* function(); 157 alias da_g_byte_array_new_take = GByteArray* function(guint8* data, gsize len); 158 alias da_g_byte_array_sized_new = GByteArray* function(guint reserved_size); 159 alias da_g_byte_array_free = guint8* function(GByteArray* array, gboolean free_segment); 160 alias da_g_byte_array_free_to_bytes = GBytes* function(GByteArray* array); 161 alias da_g_byte_array_ref = GByteArray* function(GByteArray* array); 162 alias da_g_byte_array_unref = void function(GByteArray* array); 163 alias da_g_byte_array_append = GByteArray* function(GByteArray* array, const(guint8)* data, guint len); 164 alias da_g_byte_array_prepend = GByteArray* function(GByteArray* array, const(guint8)* data, guint len); 165 alias da_g_byte_array_set_size = GByteArray* function(GByteArray* array, guint length); 166 alias da_g_byte_array_remove_index = GByteArray* function(GByteArray* array, guint index_); 167 alias da_g_byte_array_remove_index_fast = GByteArray* function(GByteArray* array, guint index_); 168 alias da_g_byte_array_remove_range = GByteArray* function(GByteArray* array, guint index_, guint length); 169 alias da_g_byte_array_sort = void function(GByteArray* array, GCompareFunc compare_func); 170 alias da_g_byte_array_sort_with_data = void function(GByteArray* array, GCompareDataFunc compare_func, gpointer user_data); 171 } 172 173 __gshared 174 { 175 da_g_array_new g_array_new; 176 da_g_array_sized_new g_array_sized_new; 177 da_g_array_free g_array_free; 178 da_g_array_ref g_array_ref; 179 da_g_array_unref g_array_unref; 180 da_g_array_get_element_size g_array_get_element_size; 181 da_g_array_append_vals g_array_append_vals; 182 da_g_array_prepend_vals g_array_prepend_vals; 183 da_g_array_insert_vals g_array_insert_vals; 184 da_g_array_set_size g_array_set_size; 185 da_g_array_remove_index g_array_remove_index; 186 da_g_array_remove_index_fast g_array_remove_index_fast; 187 da_g_array_remove_range g_array_remove_range; 188 da_g_array_sort g_array_sort; 189 da_g_array_sort_with_data g_array_sort_with_data; 190 da_g_array_set_clear_func g_array_set_clear_func; 191 da_g_ptr_array_new g_ptr_array_new; 192 da_g_ptr_array_new_with_free_func g_ptr_array_new_with_free_func; 193 da_g_ptr_array_sized_new g_ptr_array_sized_new; 194 da_g_ptr_array_new_full g_ptr_array_new_full; 195 da_g_ptr_array_free g_ptr_array_free; 196 da_g_ptr_array_ref g_ptr_array_ref; 197 da_g_ptr_array_unref g_ptr_array_unref; 198 da_g_ptr_array_set_free_func g_ptr_array_set_free_func; 199 da_g_ptr_array_set_size g_ptr_array_set_size; 200 da_g_ptr_array_remove_index g_ptr_array_remove_index; 201 da_g_ptr_array_remove_index_fast g_ptr_array_remove_index_fast; 202 da_g_ptr_array_remove g_ptr_array_remove; 203 da_g_ptr_array_remove_fast g_ptr_array_remove_fast; 204 da_g_ptr_array_remove_range g_ptr_array_remove_range; 205 da_g_ptr_array_add g_ptr_array_add; 206 da_g_ptr_array_sort g_ptr_array_sort; 207 da_g_ptr_array_sort_with_data g_ptr_array_sort_with_data; 208 da_g_ptr_array_foreach g_ptr_array_foreach; 209 da_g_byte_array_new g_byte_array_new; 210 da_g_byte_array_new_take g_byte_array_new_take; 211 da_g_byte_array_sized_new g_byte_array_sized_new; 212 da_g_byte_array_free g_byte_array_free; 213 da_g_byte_array_free_to_bytes g_byte_array_free_to_bytes; 214 da_g_byte_array_ref g_byte_array_ref; 215 da_g_byte_array_unref g_byte_array_unref; 216 da_g_byte_array_append g_byte_array_append; 217 da_g_byte_array_prepend g_byte_array_prepend; 218 da_g_byte_array_set_size g_byte_array_set_size; 219 da_g_byte_array_remove_index g_byte_array_remove_index; 220 da_g_byte_array_remove_index_fast g_byte_array_remove_index_fast; 221 da_g_byte_array_remove_range g_byte_array_remove_range; 222 da_g_byte_array_sort g_byte_array_sort; 223 da_g_byte_array_sort_with_data g_byte_array_sort_with_data; 224 } 225 } 226 227